﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Crosland.Offline.Core;
using Crosland.Offline.Logic;
using Crosland.Framework.Base;

namespace Crosland.Offline.WinForm
{
    public partial class UCClienteLista : UserControl
    {
        private ClienteLogic logic = new ClienteLogic();
        private string modoOperacion;
        private string codigoCliente;
        public event DataGridViewCellEventHandler SeleccionCliente;
        public event EventHandler Aceptar;
        public ClienteMantenimiento formEdit;

        public string ModoOperacion
        {
            get { return modoOperacion; }
            set { modoOperacion = value; }
        }

        public string CodigoCliente
        {
            get { return codigoCliente; }
            set { codigoCliente = value; }
        }
        
        public UCClienteLista()
        {
            InitializeComponent();
        }

        public UCClienteLista(string pantalla)
        {
            InitializeComponent();
        }

        private void UCClienteLista_Load(object sender, EventArgs e)
        {
            this.dgvClientes.AutoGenerateColumns = false;
            this.CargarTipoDocumento();
            this.formEdit = new ClienteMantenimiento();
            this.formEdit.ucClienteMantanimiento.Aceptar += new EventHandler(ucClienteMantanimiento_Aceptar);
        }

        protected void ucClienteMantanimiento_Aceptar(object sender, EventArgs e)
        {
            if (this.ModoOperacion == ModoVentana.Popup)
            {
                this.Aceptar(sender, e);
            }
            else
            {
                this.BusquedaClientes();                
            }
            this.formEdit.Close();
        }

        private void CargarTipoDocumento()
        {           
            this.cboTipoDocumento.ValueMember = "DESVALOR";
            this.cboTipoDocumento.DisplayMember = "DESPARAMETRO";
            this.cboTipoDocumento.DataSource = (new ParametroLogic()).ObtenerParametrosPorCategoria("tipo.documento"); ;
            
        }

        private void BusquedaClientes()
        {
            string codigo = (!string.IsNullOrEmpty(this.txtCodigo.Text))?this.txtCodigo.Text:null;
            string nombre = (!string.IsNullOrEmpty(this.txtNombre.Text)) ? this.txtNombre.Text : null;
            string tipoDocumento = (this.cboTipoDocumento.SelectedIndex>0) ? 
                this.cboTipoDocumento.SelectedValue.ToString() : null;
            string numDocumento = (!string.IsNullOrEmpty(this.txtNumeroDocumento.Text)) ? this.txtNumeroDocumento.Text : null;

            this.dgvClientes.DataSource = this.logic.BuscarClientes(codigo, nombre, tipoDocumento, numDocumento);
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            this.BusquedaClientes();
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            this.NuevoRegistro();
        }

        private void dgvClientes_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                int indexRow = this.dgvClientes.CurrentCell.RowIndex;
                DataGridViewRow row = this.dgvClientes.Rows[indexRow];

                string id = row.Cells[0].Value.ToString();

                if (this.ModoOperacion == ModoVentana.Normal)
                {                    
                    formEdit.ucClienteMantanimiento.CodigoCliente = id;
                    formEdit.ucClienteMantanimiento.ModoOperacion = this.ModoOperacion;
                    formEdit.ShowDialog(this.Parent);
                }
                if (this.ModoOperacion == ModoVentana.Popup)
                {
                    this.CodigoCliente = id;
                    this.SeleccionCliente(sender, e);
                }
            }
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            ((Form)this.Parent).Close();
        }
        
        private void editarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int indexRow = this.dgvClientes.CurrentCell.RowIndex;
            DataGridViewRow row = this.dgvClientes.Rows[indexRow];

            string id = row.Cells[0].Value.ToString();
                        
            formEdit.ucClienteMantanimiento.CodigoCliente = id;
            formEdit.ucClienteMantanimiento.ModoOperacion = this.ModoOperacion;
            formEdit.ShowDialog(this.Parent);
        }


        private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.NuevoRegistro();
        }

        protected void NuevoRegistro()
        {            
            formEdit.ucClienteMantanimiento.ModoOperacion = this.ModoOperacion;
            formEdit.ucClienteMantanimiento.CodigoCliente = string.Empty;
            formEdit.ShowDialog(this.Parent);
        }
    }
}
